草庐IT

C++ make_shared 不可用

全部标签

c++ - 创建一个非拥有的 shared_ptr?

我是C++11的新手,现在正在努力通过避免直接使用指针来提高我的C++技能。我正在尝试编写一个Sprite管理器来跟踪以前加载的Sprite并释放未使用的Sprite。我正在尝试为此使用shared_ptr(指向位图的指针),但管理器还必须保留一个shared_ptr来创建Sprite-所以引用计数不会下降到0。我能以某种方式声明“父”shared_ptr在我的经理中没有所有权,所以它不算作引用(并且仍然创建该shared_ptr的所有权拷贝)? 最佳答案 使用weak_ptr.那会解决你的问题。您不需要释放它们,因为它们会自动释放

c++ - 如何为成员创建 shared_ptr?

我不确定我是因为文档错误还是更头疼,所以...我想做的是创建一个与另一个共享所有权的shared_ptr,但它引用对象的一个​​成员而不是整个对象。简单的例子,起点...structs{inta,b;};shared_ptrs1(news);//pointingtowholeobject来自en.cppreference.com,shared_ptr的构造函数(8)是...templateshared_ptr(constshared_ptr&r,T*ptr);描述中提到“构造一个与r共享所有权信息的shared_ptr,但持有一个不相关且非托管的指针ptr...例如在ptr是r管理的对

c++ - 将 shared_ptr 与 char* 一起使用

我无法创建:shared_ptrn_char=make_shared(newchar[size_]{});如何创建char*chr=newchar[size_]{};使用现代指针? 最佳答案 shared_ptrn_char=make_shared(newchar[size_]{});make_shared在内部调用new,因此您永远不会同时使用两者。在这种情况下,您只需调用new,因为make_shared不适用于数组。但是,你仍然需要让它调用正确的删除:C++17之前:您需要明确指定删除器。std::shared_ptrptr(

c++ - 初始化 shared_ptr 成员变量,new vs make_shared?

当初始化一个shared_ptr成员变量时://.hclassCustomer{public:Customer();private:std::shared_ptrsomething_;}//.cppCustomer():something_(newOtherClass()){}对比Customer():something_(std::make_shared()){}是否允许使用make_shared版本?我似乎总是看到第一个版本,哪个是首选? 最佳答案 不允许make_shared的唯一时间是:如果您得到一个由其他人分配的裸指针并将

Linux: make/Makefile 相关的知识

背景:会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,VisualC++的nmake,Linux下GNU的

“共享应用”不可用:iOS上没有(应用程序扩展)

我正在构建一个应用程序,并在一个月前开发了今天的扩展名。随机地,在运行iOS11Beta的第10次运行时,我第一次出现了一个错误,现在整个应用程序都不会构建。/USERS/DOCUMENTS/Appname/pods/carbonkit/carbonkit/carbontabswipenavigation.m:622:27:'sharedApplication'不可用:在iOS(AppExtension)上不可用-在适当的地方使用视图基于控制器的解决方案。该错误出现在POD中,但它是在用OBJ-C而不是Swift编写的文件中出现的,因此很难理解。这些是错误出现的行://Someprojects

HttpMessageNotReadableException(HTTP消息不可读异常)可能的原因和解决方法

HttpMessageNotReadableException是Spring框架中一个常见的异常,通常发生在尝试从HTTP请求中读取消息时出现问题。以下是可能导致HttpMessageNotReadableException的一些原因和相应的解决方法:请求体为空:原因:尝试从请求体中读取消息,但请求体为空。解决方法:确保请求中包含有效的请求体。如果期望请求体为空,可以通过将请求方法设置为GET或者确保Content-Type为application/json等合适的值。无效的JSON格式:原因:尝试从请求体中读取JSON消息,但JSON格式不正确。解决方法:确保请求体中的JSON格式是有效的。

c++ - 如何将 boost::shared_ptr 引入现有(大型)C++ 代码库?

我目前正尝试通过引入智能指针的使用来修复我们代码库中的一些弱点。代码库非常庞大,并且相互关联,就像一只喝过一对多咖啡的蜘蛛。我想知道以前是否有人尝试过,他们的方法是什么。我的第一步是typedef类,如下所示。#ifndefUSE_SMART_POINTERS#defineUSE_SMART_POINTERS0#endif#ifUSE_SMART_POINTERS==1#include#endifnamespaceProductX{//forwarddeclerationclassCTObject;//typedefs#ifUSE_SMART_POINTERS==1typedefboo

来自 std::cout 的 C++11 std::shared_ptr<std::ostream>

我在存储std::cout时遇到问题在std::shared_ptr.因为这显然不应该这样做:std::shared_ptrp_cout(&std::cout);这甚至是不可能的,因为不可能复制std::ostream:std::shared_ptrp_cout=std::make_shared(std::cout);有人知道合法的解决方法吗? 最佳答案 您的要求很奇怪,但您当然可以存储指向std::ostream的指针在shared_ptr如果您采取适当的处置措施:例如:std::shared_ptr(&std::cout,[](

c++ - `std::optional` 比 `std::shared_ptr` 和 `std::unique_ptr` 有什么优势?

std::optional的推理是madebysaying它可能包含也可能不包含值。因此,如果我们不需要它,它可以节省我们构建一个可能很大的对象的努力。Forexample,这里的工厂,如果不满足某些条件,将不会构造对象:#include#include#includestd::optionalcreate(boolb){if(b)return"Godzilla";//stringisconstructedelsereturn{};//noconstructionofthestringrequired}但是这和这个有什么不同:std::shared_ptrcreate(boolb){i